Multimedia computing devices are able to decode and present multimedia content data, such as video or audio. They are also able to generate and present locally generated graphics data. Often the graphics data is presented as a form of overlay on the multimedia data.
For example, a popular use case for many multimedia computing devices, especially portable multimedia computing devices, is to download (or create), store, and subsequently or concurrently process and display multimedia data, such as video, moving graphics or the like, together with audio. This may involve providing some form of computer generated graphics overlaying the presented multimedia content data. For example, a user interactive menu system (such as an Electronic Programming guide (EPG) system control menu, or the like), or simply some playback controls above/below the video to allow a user to control the playback of the video (i.e. providing, e.g. touchscreen based play, stop, fast forward, rewind buttons, etc). The overlay may also show pertinent information on the video itself, such as playing time left/elapsed, total video length and the like.
When any computing device drives a display, this is usually done by filling a display buffer with data representing each pixel of each frame to be displayed. A display buffer may store one or more frames ready for display. The display buffer can act as a temporary store of display data that has already been processed by the computing system ready for display, and as such, may allow the computing system to carry out other tasks, for example decode/render later frames, or enter a lower power state during the periods when the data from the display buffer is being used for display.
When overlay graphics data is used with decoded multimedia data, the respective content data (multimedia or graphics) is decoded and stored in uncompressed format (i.e. in the form of a data representation, such as binary number, for each pixel in the display) within a display buffer. A display buffer may also be called a frame buffer, since the uncompressed data may be stored frame by frame. The display buffer comprises an area of memory, with sufficient space to store a digital data representation for each and every pixel in the display being driven from the respective display buffer.
The process of displaying the rendered graphics data and decoded multimedia data typically happens “on-the-fly”, i.e. the respective data is read out of the display buffer (or respective display buffers, where more than one is used), and then combined in such a way as to actually display the intended display data for each pixel. For example, overlaying the graphics data on top of the video where appropriate (e.g. where a control is to overlay the video), or not overlaying the graphics data, and leaving just the decoded video data to be displayed (e.g. in a ‘clear’ area of video, not intended to have any overlaid graphics).